home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Apple WWDC 1996
/
WWDC96_1996 (CD).toast
/
Technology Materials
/
MacOS 8 Resources
/
Developer Tools
/
Mac OS 8 Interfaces & Libraries
/
Interfaces
/
AIncludes
/
SoundComponents.a
< prev
next >
Wrap
Text File
|
1996-05-01
|
20KB
|
673 lines
;
; File: SoundComponents.a
;
; Contains: Sound Components Interfaces.
;
; Version: Technology: System 7.5
; Release: Universal Interfaces 3.0d3 on Copland DR1
;
; Copyright: © 1984-1996 by Apple Computer, Inc. All rights reserved.
;
; Bugs?: If you find a problem with this file, send the file and version
; information (from above) and the problem description to:
;
; Internet: apple.bugs@applelink.apple.com
; AppleLink: APPLE.BUGS
;
;
IF &TYPE('__SOUNDCOMPONENTS__') = 'UNDEFINED' THEN
__SOUNDCOMPONENTS__ SET 1
IF &TYPE('__TYPES__') = 'UNDEFINED' THEN
include 'Types.a'
ENDIF
IF &TYPE('__COMPONENTS__') = 'UNDEFINED' THEN
include 'Components.a'
ENDIF
IF &TYPE('__SOUND__') = 'UNDEFINED' THEN
include 'Sound.a'
ENDIF
;
; * * * N O T E * * *
;
; This file has been updated to include Sound Manager 3.1 interfaces.
;
; Some of the Sound Manager 3.0 interfaces were not put into the InterfaceLib
; that originally shipped with the PowerMacs. These missing functions and the
; new 3.1 interfaces have been released in the SoundLib library for PowerPC
; developers to link with. The runtime library for these functions are
; installed by Sound Manager 3.1. The following functions are found in SoundLib.
;
; AudioGetBass, AudioGetInfo, AudioGetMute, AudioGetOutputDevice,
; AudioGetTreble, AudioGetVolume, AudioMuteOnEvent, AudioSetBass,
; AudioSetMute, AudioSetToDefaults, AudioSetTreble, AudioSetVolume,
; OpenMixerSoundComponent, CloseMixerSoundComponent, SoundComponentAddSource,
; SoundComponentGetInfo, SoundComponentGetSource, SoundComponentGetSourceData,
; SoundComponentInitOutputDevice, SoundComponentPauseSource,
; SoundComponentPlaySourceBuffer, SoundComponentRemoveSource,
; SoundComponentSetInfo, SoundComponentSetOutput, SoundComponentSetSource,
; SoundComponentStartSource, SoundComponentStopSource
;
;
;~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
; constants
;~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
;sound component types and subtypes
;
kNoSoundComponentType EQU '****'
kSoundComponentType EQU 'sift' ;component type
kSoundComponentPPCType EQU 'nift' ;component type for PowerPC code
kRate8SubType EQU 'ratb' ;8-bit rate converter
kRate16SubType EQU 'ratw' ;16-bit rate converter
kConverterSubType EQU 'conv' ;sample format converter
kSndSourceSubType EQU 'sour' ;generic source component
kMixerType EQU 'mixr'
kMixer8SubType EQU 'mixb' ;8-bit mixer
kMixer16SubType EQU 'mixw' ;16-bit mixer
kSoundOutputDeviceType EQU 'sdev' ;sound output component
kClassicSubType EQU 'clas' ;classic hardware, i.e. Mac Plus
kASCSubType EQU 'asc ' ;Apple Sound Chip device
kDSPSubType EQU 'dsp ' ;DSP device
kAwacsSubType EQU 'awac' ;Another of Will's Audio Chips device
kGCAwacsSubType EQU 'awgc' ;Awacs audio with Grand Central DMA
kSingerSubType EQU 'sing' ;Singer (via Whitney) based sound
kSinger2SubType EQU 'sng2' ;Singer 2 (via Whitney) for Acme
kWhitSubType EQU 'whit' ;Whit sound component for PrimeTime 3
kSoundBlasterSubType EQU 'sbls' ;Sound Blaster for CHRP
kSoundCompressor EQU 'scom'
kSoundDecompressor EQU 'sdec'
kMace3SubType EQU 'MAC3' ;MACE 3:1
kMace6SubType EQU 'MAC6' ;MACE 6:1
kCDXA4SubType EQU 'cdx4' ;CD/XA 4:1
kCDXA2SubType EQU 'cdx2' ;CD/XA 2:1
kIMA4SubType EQU 'ima4' ;IMA 4:1
kULawSubType EQU 'ulaw' ;µLaw 2:1
kLittleEndianSubType EQU 'sowt' ;Little-endian
kAudioComponentType EQU 'adio' ;Audio components and sub-types
kAwacsPhoneSubType EQU 'hphn'
kAudioVisionSpeakerSubType EQU 'telc'
kAudioVisionHeadphoneSubType EQU 'telh'
kPhilipsFaderSubType EQU 'tvav'
; sound component set/get info selectors
siVolume EQU 'volu'
siHardwareVolume EQU 'hvol'
siSpeakerVolume EQU 'svol'
siHeadphoneVolume EQU 'pvol'
siHardwareVolumeSteps EQU 'hstp'
siHeadphoneVolumeSteps EQU 'hdst'
siHardwareMute EQU 'hmut'
siSpeakerMute EQU 'smut'
siHeadphoneMute EQU 'pmut'
siRateMultiplier EQU 'rmul'
siQuality EQU 'qual'
siWideStereo EQU 'wide'
siHardwareFormat EQU 'hwfm'
siPreMixerSoundComponent EQU 'prmx'
siPostMixerSoundComponent EQU 'psmx'
kOffsetBinary EQU 'raw ' ;format types
kTwosComplement EQU 'twos'
kMACE3Compression EQU 'MAC3'
kMACE6Compression EQU 'MAC6'
; features flags
k8BitRawIn EQU $01 ;data description
k8BitTwosIn EQU $02
k16BitIn EQU $04
kStereoIn EQU $08
k8BitRawOut EQU $0100
k8BitTwosOut EQU $0200
k16BitOut EQU $0400
kStereoOut EQU $0800
kReverse EQU $00010000 ; function description
kRateConvert EQU $00020000
kCreateSoundSource EQU $00040000
kHighQuality EQU $00400000 ; performance description
kNonRealTime EQU $00800000
IF FOR_SYSTEM7_AND_SYSTEM8_DEPRECATED THEN
; SoundComponentPlaySourceBuffer action flags
kSourcePaused EQU $01
kPassThrough EQU $00010000
kNoSoundComponentChain EQU $00020000
; flags for OpenMixerSoundComponent
kNoMixing EQU $01 ;don't mix source
kNoSampleRateConversion EQU $02 ;don't convert sample rate (i.e. 11 kHz -> 22 kHz)
kNoSampleSizeConversion EQU $04 ;don't convert sample size (i.e. 16 -> 8)
kNoSampleFormatConversion EQU $08 ;don't convert sample format (i.e. 'twos' -> 'raw ')
kNoChannelConversion EQU $10 ;don't convert stereo/mono
kNoDecompression EQU $20 ;don't decompress (i.e. 'MAC3' -> 'raw ')
kNoVolumeConversion EQU $40 ;don't apply volume
kNoRealtimeProcessing EQU $80 ;won't run at interrupt time
; SoundParamBlock quality flags
kBestQuality EQU $01 ;use interpolation in rate conversion
; useful bit masks
kInputMask EQU $000000FF ;masks off input bits
kOutputMask EQU $0000FF00 ;masks off output bits
kOutputShift EQU 8 ;amount output bits are shifted
kActionMask EQU $00FF0000 ;masks off action bits
kSoundComponentBits EQU $00FFFFFF
; Audio Component constants
;Values for whichChannel parameter
audioAllChannels EQU 0 ;All channels (usually interpreted as both left and right)
audioLeftChannel EQU 1 ;Left channel
audioRightChannel EQU 2 ;Right channel
;Values for mute parameter
audioUnmuted EQU 0 ;Device is unmuted
audioMuted EQU 1 ;Device is muted
;Capabilities flags definitions
audioDoesMono EQU $00000001 ;Device supports mono output
audioDoesStereo EQU $00000002 ;Device supports stereo output
audioDoesIndependentChannels EQU $00000004 ;Device supports independent software control of each channel
;
;~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
; typedefs
;~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
;
;
;ShortFixed consists of an 8 bit, 2's complement integer part in the high byte,
;with an 8 bit fractional part in the low byte; its range is -128 to 127.99609375
;
; typedef short ShortFixed
; typedef SoundParamBlock * SoundParamBlockPtr
SoundParamBlock RECORD 0
recordSize ds.l 1 ; offset: $0 (0) ; size of this record in bytes
desc ds SoundComponentData ; offset: $4 (4) ; description of sound buffer
rateMultiplier ds.l 1 ; offset: $20 (32) ; rate multiplier to apply to sound
leftVolume ds.w 1 ; offset: $24 (36) ; volumes to apply to sound
rightVolume ds.w 1 ; offset: $26 (38)
quality ds.l 1 ; offset: $28 (40) ; quality to apply to sound
filter ds.l 1 ; offset: $2C (44) ; filter to apply to sound
moreRtn ds.l 1 ; offset: $30 (48) ; routine to call to get more data
completionRtn ds.l 1 ; offset: $34 (52) ; routine to call when buffer is complete
refCon ds.l 1 ; offset: $38 (56) ; user refcon
result ds.w 1 ; offset: $3C (60) ; result
sizeof EQU * ; size: $3E (62)
ENDR
; private thing to reference a Sound Source
; typedef SoundSource * SoundSourcePtr
SoundComponentLink RECORD 0
description ds ComponentDescription ; offset: $0 (0) ; Describes the sound component
mixerID ds.l 1 ; offset: $14 (20) ; Reserved by Apple
linkID ds.l 1 ; offset: $18 (24) ; Reserved by Apple
sizeof EQU * ; size: $1C (28)
ENDR
; typedef struct SoundComponentLink * SoundComponentLinkPtr
AudioInfo RECORD 0
capabilitiesFlags ds.l 1 ; offset: $0 (0) ; Describes device capabilities
reserved ds.l 1 ; offset: $4 (4) ; Reserved by Apple
numVolumeSteps ds.w 1 ; offset: $8 (8) ; Number of significant increments between min and max volume
sizeof EQU * ; size: $A (10)
ENDR
; typedef struct AudioInfo * AudioInfoPtr
;
;~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
; functions for sound components
;~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
;Sound Component dispatch selectors
;
kSoundComponentInitOutputDeviceSelect EQU 1 ;these calls cannot be delegated
kSoundComponentSetSourceSelect EQU 2
kSoundComponentGetSourceSelect EQU 3
kSoundComponentGetSourceDataSelect EQU 4
kSoundComponentSetOutputSelect EQU 5
kDelegatedSoundComponentSelectors EQU $0100 ;first selector that can be delegated up the chain
;these calls can be delegated and have own range
kSoundComponentAddSourceSelect EQU $0101
kSoundComponentRemoveSourceSelect EQU $0102
kSoundComponentGetInfoSelect EQU $0103
kSoundComponentSetInfoSelect EQU $0104
kSoundComponentStartSourceSelect EQU $0105
kSoundComponentStopSourceSelect EQU $0106
kSoundComponentPauseSourceSelect EQU $0107
kSoundComponentPlaySourceBufferSelect EQU $0108
;Audio Component selectors
kAudioGetVolumeSelect EQU 0
kAudioSetVolumeSelect EQU 1
kAudioGetMuteSelect EQU 2
kAudioSetMuteSelect EQU 3
kAudioSetToDefaultsSelect EQU 4
kAudioGetInfoSelect EQU 5
kAudioGetBassSelect EQU 6
kAudioSetBassSelect EQU 7
kAudioGetTrebleSelect EQU 8
kAudioSetTrebleSelect EQU 9
kAudioGetOutputDeviceSelect EQU 10
kAudioMuteOnEventSelect EQU 129
;
;~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
; Sound Manager 3.0 utilities
;
;
; pascal OSErr OpenMixerSoundComponent(SoundComponentDataPtr outputDescription, long outputFlags, ComponentInstance *mixerComponent)
;
IF ¨ GENERATINGCFM THEN
Macro
_OpenMixerSoundComponent
move.l #$06140018,D0
dc.w $A800
EndM
ELSE
IMPORT_CFM_FUNCTION OpenMixerSoundComponent
ENDIF
;
; pascal OSErr CloseMixerSoundComponent(ComponentInstance ci)
;
IF ¨ GENERATINGCFM THEN
Macro
_CloseMixerSoundComponent
move.l #$02180018,D0
dc.w $A800
EndM
ELSE
IMPORT_CFM_FUNCTION CloseMixerSoundComponent
ENDIF
;
;~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
; basic sound component functions
;
;
; pascal ComponentResult SoundComponentInitOutputDevice(ComponentInstance ti, long actions)
;
IF ¨ GENERATINGCFM THEN
Macro
_SoundComponentInitOutputDevice
move.l #$00040001,-(sp)
moveq #0,D0
dc.w $A82A
EndM
ELSE
IMPORT_CFM_FUNCTION SoundComponentInitOutputDevice
ENDIF
;
; pascal ComponentResult SoundComponentSetSource(ComponentInstance ti, SoundSource sourceID, ComponentInstance source)
;
IF ¨ GENERATINGCFM THEN
Macro
_SoundComponentSetSource
move.l #$00080002,-(sp)
moveq #0,D0
dc.w $A82A
EndM
ELSE
IMPORT_CFM_FUNCTION SoundComponentSetSource
ENDIF
;
; pascal ComponentResult SoundComponentGetSource(ComponentInstance ti, SoundSource sourceID, ComponentInstance *source)
;
IF ¨ GENERATINGCFM THEN
Macro
_SoundComponentGetSource
move.l #$00080003,-(sp)
moveq #0,D0
dc.w $A82A
EndM
ELSE
IMPORT_CFM_FUNCTION SoundComponentGetSource
ENDIF
;
; pascal ComponentResult SoundComponentGetSourceData(ComponentInstance ti, SoundComponentDataPtr *sourceData)
;
IF ¨ GENERATINGCFM THEN
Macro
_SoundComponentGetSourceData
move.l #$00040004,-(sp)
moveq #0,D0
dc.w $A82A
EndM
ELSE
IMPORT_CFM_FUNCTION SoundComponentGetSourceData
ENDIF
;
; pascal ComponentResult SoundComponentSetOutput(ComponentInstance ti, SoundComponentDataPtr requested, SoundComponentDataPtr *actual)
;
IF ¨ GENERATINGCFM THEN
Macro
_SoundComponentSetOutput
move.l #$00080005,-(sp)
moveq #0,D0
dc.w $A82A
EndM
ELSE
IMPORT_CFM_FUNCTION SoundComponentSetOutput
ENDIF
;
;~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
; junction methods for the mixer, must be called at non-interrupt level
;
;
; pascal ComponentResult SoundComponentAddSource(ComponentInstance ti, SoundSource *sourceID)
;
IF ¨ GENERATINGCFM THEN
Macro
_SoundComponentAddSource
move.l #$00040101,-(sp)
moveq #0,D0
dc.w $A82A
EndM
ELSE
IMPORT_CFM_FUNCTION SoundComponentAddSource
ENDIF
;
; pascal ComponentResult SoundComponentRemoveSource(ComponentInstance ti, SoundSource sourceID)
;
IF ¨ GENERATINGCFM THEN
Macro
_SoundComponentRemoveSource
move.l #$00040102,-(sp)
moveq #0,D0
dc.w $A82A
EndM
ELSE
IMPORT_CFM_FUNCTION SoundComponentRemoveSource
ENDIF
;
;~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
; info methods
;
;
; pascal ComponentResult SoundComponentGetInfo(ComponentInstance ti, SoundSource sourceID, OSType selector, void *infoPtr)
;
IF ¨ GENERATINGCFM THEN
Macro
_SoundComponentGetInfo
move.l #$000C0103,-(sp)
moveq #0,D0
dc.w $A82A
EndM
ELSE
IMPORT_CFM_FUNCTION SoundComponentGetInfo
ENDIF
;
; pascal ComponentResult SoundComponentSetInfo(ComponentInstance ti, SoundSource sourceID, OSType selector, void *infoPtr)
;
IF ¨ GENERATINGCFM THEN
Macro
_SoundComponentSetInfo
move.l #$000C0104,-(sp)
moveq #0,D0
dc.w $A82A
EndM
ELSE
IMPORT_CFM_FUNCTION SoundComponentSetInfo
ENDIF
;
;~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
; control methods
;
;
; pascal ComponentResult SoundComponentStartSource(ComponentInstance ti, short count, SoundSource *sources)
;
IF ¨ GENERATINGCFM THEN
Macro
_SoundComponentStartSource
move.l #$00060105,-(sp)
moveq #0,D0
dc.w $A82A
EndM
ELSE
IMPORT_CFM_FUNCTION SoundComponentStartSource
ENDIF
;
; pascal ComponentResult SoundComponentStopSource(ComponentInstance ti, short count, SoundSource *sources)
;
IF ¨ GENERATINGCFM THEN
Macro
_SoundComponentStopSource
move.l #$00060106,-(sp)
moveq #0,D0
dc.w $A82A
EndM
ELSE
IMPORT_CFM_FUNCTION SoundComponentStopSource
ENDIF
;
; pascal ComponentResult SoundComponentPauseSource(ComponentInstance ti, short count, SoundSource *sources)
;
IF ¨ GENERATINGCFM THEN
Macro
_SoundComponentPauseSource
move.l #$00060107,-(sp)
moveq #0,D0
dc.w $A82A
EndM
ELSE
IMPORT_CFM_FUNCTION SoundComponentPauseSource
ENDIF
;
; pascal ComponentResult SoundComponentPlaySourceBuffer(ComponentInstance ti, SoundSource sourceID, SoundParamBlockPtr pb, long actions)
;
IF ¨ GENERATINGCFM THEN
Macro
_SoundComponentPlaySourceBuffer
move.l #$000C0108,-(sp)
moveq #0,D0
dc.w $A82A
EndM
ELSE
IMPORT_CFM_FUNCTION SoundComponentPlaySourceBuffer
ENDIF
;
;~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
; interface for Audio Components
;~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
;
;
;Volume is described as a value between 0 and 1, with 0 indicating minimum
; volume and 1 indicating maximum volume; if the device doesn't support
; software control of volume, then a value of unimpErr is returned, indicating
; that these functions are not supported by the device
;
;
; pascal ComponentResult AudioGetVolume(ComponentInstance ac, short whichChannel, ShortFixed *volume)
;
IF ¨ GENERATINGCFM THEN
Macro
_AudioGetVolume
move.l #$00060000,-(sp)
moveq #0,D0
dc.w $A82A
EndM
ELSE
IMPORT_CFM_FUNCTION AudioGetVolume
ENDIF
;
; pascal ComponentResult AudioSetVolume(ComponentInstance ac, short whichChannel, ShortFixed volume)
;
IF ¨ GENERATINGCFM THEN
Macro
_AudioSetVolume
move.l #$00040001,-(sp)
moveq #0,D0
dc.w $A82A
EndM
ELSE
IMPORT_CFM_FUNCTION AudioSetVolume
ENDIF
;
;If the device doesn't support software control of mute, then a value of unimpErr is
;returned, indicating that these functions are not supported by the device.
;
;
; pascal ComponentResult AudioGetMute(ComponentInstance ac, short whichChannel, short *mute)
;
IF ¨ GENERATINGCFM THEN
Macro
_AudioGetMute
move.l #$00060002,-(sp)
moveq #0,D0
dc.w $A82A
EndM
ELSE
IMPORT_CFM_FUNCTION AudioGetMute
ENDIF
;
; pascal ComponentResult AudioSetMute(ComponentInstance ac, short whichChannel, short mute)
;
IF ¨ GENERATINGCFM THEN
Macro
_AudioSetMute
move.l #$00040003,-(sp)
moveq #0,D0
dc.w $A82A
EndM
ELSE
IMPORT_CFM_FUNCTION AudioSetMute
ENDIF
;
;AudioSetToDefaults causes the associated device to reset its volume and mute values
;(and perhaps other characteristics, e.g. attenuation) to "factory default" settings
;
;
; pascal ComponentResult AudioSetToDefaults(ComponentInstance ac)
;
IF ¨ GENERATINGCFM THEN
Macro
_AudioSetToDefaults
move.l #$00000004,-(sp)
moveq #0,D0
dc.w $A82A
EndM
ELSE
IMPORT_CFM_FUNCTION AudioSetToDefaults
ENDIF
; This routine is required; it must be implemented by all audio components
;
; pascal ComponentResult AudioGetInfo(ComponentInstance ac, AudioInfoPtr info)
;
IF ¨ GENERATINGCFM THEN
Macro
_AudioGetInfo
move.l #$00040005,-(sp)
moveq #0,D0
dc.w $A82A
EndM
ELSE
IMPORT_CFM_FUNCTION AudioGetInfo
ENDIF
;
; pascal ComponentResult AudioGetBass(ComponentInstance ac, short whichChannel, short *bass)
;
IF ¨ GENERATINGCFM THEN
Macro
_AudioGetBass
move.l #$00060006,-(sp)
moveq #0,D0
dc.w $A82A
EndM
ELSE
IMPORT_CFM_FUNCTION AudioGetBass
ENDIF
;
; pascal ComponentResult AudioSetBass(ComponentInstance ac, short whichChannel, short bass)
;
IF ¨ GENERATINGCFM THEN
Macro
_AudioSetBass
move.l #$00040007,-(sp)
moveq #0,D0
dc.w $A82A
EndM
ELSE
IMPORT_CFM_FUNCTION AudioSetBass
ENDIF
;
; pascal ComponentResult AudioGetTreble(ComponentInstance ac, short whichChannel, short *Treble)
;
IF ¨ GENERATINGCFM THEN
Macro
_AudioGetTreble
move.l #$00060008,-(sp)
moveq #0,D0
dc.w $A82A
EndM
ELSE
IMPORT_CFM_FUNCTION AudioGetTreble
ENDIF
;
; pascal ComponentResult AudioSetTreble(ComponentInstance ac, short whichChannel, short Treble)
;
IF ¨ GENERATINGCFM THEN
Macro
_AudioSetTreble
move.l #$00040009,-(sp)
moveq #0,D0
dc.w $A82A
EndM
ELSE
IMPORT_CFM_FUNCTION AudioSetTreble
ENDIF
;
; pascal ComponentResult AudioGetOutputDevice(ComponentInstance ac, Component *outputDevice)
;
IF ¨ GENERATINGCFM THEN
Macro
_AudioGetOutputDevice
move.l #$0004000A,-(sp)
moveq #0,D0
dc.w $A82A
EndM
ELSE
IMPORT_CFM_FUNCTION AudioGetOutputDevice
ENDIF
; This is routine is private to the AudioVision component. It enables the watching of the mute key.
;
; pascal ComponentResult AudioMuteOnEvent(ComponentInstance ac, short muteOnEvent)
;
IF ¨ GENERATINGCFM THEN
Macro
_AudioMuteOnEvent
move.l #$00020081,-(sp)
moveq #0,D0
dc.w $A82A
EndM
ELSE
IMPORT_CFM_FUNCTION AudioMuteOnEvent
ENDIF
ENDIF
ENDIF ; __SOUNDCOMPONENTS__